# 删除列表里所有字符串对象。
"""
# 定义列表
list1 = [11,22,33,44,'ss','88',909,77,55]
# 创建一个空列表
list2 = []
# 遍历访问最开始的列表
for i in list1:
    if type(i) !=str:       # 如果说某一个数据类型不是字符串对象
        list2.append(i)     # 那么就是用列表内置方法 ：append加到新列表里面
# 打印收集后的列表
print(list2)
"""

# 删除列表中重复的元素。
"""
# 定义测试列表
list1 = [11,22,33,44,11,22,33,44]
# 转成集合对象，再强转成列表
print(list(set(list1)))
"""

l1 = [1, 2, 3, 4, 5]
# （1）在l1的元素3后面插入300
# l1.insert(3,300)
# print(l1)
# （2）删除元素2；
# l1.remove(2)
# print(l1)
# （3）将5更改为500
# l1[-1] = 500        # 索引访问：-1就是找到最后一个，直接=就是修改
# print(l1)
# （4）将2，3，4切片出来；
# new_l1 = l1[1:4]
# print(new_l1)
# （5）l1[-3:-5]的结果；
# print(l1[-3:-5])
# （6）l1[-3:]的结果。
# print(l1[-3:])

# 通过input引导用户输入一个姓名，判断该姓名是否存在于列表names中。
"""
name = input("请输入姓名：")
names = ['suki','tiki','zach']
if name in names:
    print(f"输入的：{name} 在姓名列表里面")
else:
    print(f"输入的：{name} 不在姓名列表里面")
"""

l = [1,2,3,[4,5]]
# 从左面到右面
#    0 1 2  3
# 从右面到左面
#   -4 -3 -2 -1
# print(l[-4])
# print(l[-1][-2])
# （1）将4修改为400；
# l[-1][0] = 400
# print(l)
# （2）在l的[4，5]列表中追加一个6，即使l变为[1,2,3,[4,5,6]]。
# l[-1].append(6)
# print(l)
# 计算数值型列表的平均值是多少？
nums = [11,22,33,44,55]
# print(sum(nums)/len(nums))

# 从数值型列表中，将索引位置为偶数的，挑选出来，放到一个新列表里
nums2 = [11,22,33,44,55,66,77,88]
#        11    33    55    77
# 定义收集列表
result = []
# 根据列表长度进行遍历
for i in range(len(nums2)):     # len方法统计列表长度的：8
    if i%2==0:
        result.append(nums2[i])
# print(f"数值型列表中，将索引位置为偶数的，挑选出来，放到一个新列表里：{result}")
# 求出列表里最大的数是多少（不允许用sort等其他内置函数去做）,以及这个数所在的索引位置。
nums3 = [445654,2,35,109,22312,45123,56633,2223,99]
max = nums3[0]      # 先从列表里面随便拿一个值出来进行逐一比对
index = 0
# 循环遍历这个列表
for i in range(len(nums3)):
    # 判断：如果列表中某一个值大于了你定义的最大值
    if nums3[i] > max:
        # 把当前循环变量的i值重新赋值给最大值
        max = nums3[i]
        # 把当前索引的i值重新赋值给索引位置
        index = i
# print(f"求出列表里最大的数是多少（不允许用sort等其他内置函数去做）,这个数：{max}，所在的索引位置：{index}")
# 学生管理系统：打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，并且需要接收用户的输入，在根据输入内容调用相应函数实现相应功能。
"""
# 定义一个字典
stu_dict = {}
# 死循环
while True:
    print("欢迎来到学生管理系统！")
    print("功能菜单如下：\n")
    print("①添加学生信息")
    print("②删除学生信息")
    print("③修改学生信息")
    print("④显示学生信息")
    print("⑤退出系统")
    r = input("请输入您要选择的序号：")
    # 添加学生信息
    if r == '1':
        name = input("请输入您要添加的学生姓名：")
        address = input("请输入您要添加的学生地址：")
        phone = input("请输入您要添加的学生联系方式：")
        sex = input("请输入您要添加的学生性别：")
        age = input("请输入您要添加的学生年龄：")
        # 判断是否存在于字典中
        if name not in stu_dict:
            # 可以把这个学生信息加进去：  {"张三":{"地址":address,"手机号码":phone,"性别":sex,"年龄":age}}
            stu_dict[name] = {"地址":address,"手机号码":phone,"性别":sex,"年龄":age}
            print(f"添加成功！")
            print(f"学生姓名为：{name}，地址是：{address}，电话号码：{phone}，性别：{sex}，年龄：{age}")
        else:
            print(f"您要添加的：{name}已经存在于学生系统中，添加失败！")
        pass        #占位符， 没任何作用，就是放上去不会报错
    # 删除学生信息：
    elif r == '2':
        # 先输入要删除的学生姓名
        name = input("请先输入您要删除的学生姓名：")
        # 判断这个学生是否存在于学生字典里
        if name in stu_dict:
            # 如果在，就用pop内置方法，通过key删除掉这一组学生信息
            stu_dict.pop(name)
            # 打印语句，提示用的
            print(f"{name}学生信息删除成功！")
        # 如果这个学生不存在于学生系统中
        else:
            # 打印语句，删除是失败的
            print(f"您要删除的：{name}不存在于学生系统中，删除失败！")
        pass
    # 修改学生信息
    elif r == '3':
        # 先输入要修改的学生姓名
        old_name = input("请输入您要修改的学生姓名：")
        # 如果说要修改的学生姓名存在于学生字典里
        if old_name in stu_dict:
            # 进一步修改其他的内容
            new_name = input("请输入您修改后的学生姓名：")
            address = input("请输入您要添加的学生地址：")
            phone = input("请输入您要添加的学生联系方式：")
            sex = input("请输入您要添加的学生性别：")
            age = input("请输入您要添加的学生年龄：")
            # 把原来的学生信息先删除掉
            stu_dict.pop(old_name)
            # 再去添加新的学生信息
            stu_dict[new_name] = {"地址":address,"手机号码":phone,"性别":sex,"年龄":age}
            print(f"原学生姓名为：{old_name}，信息修改成功！修改后的姓名是：{new_name}，"
                  f"地址是：{address}，电话号码：{phone}，性别：{sex}，年龄：{age}")
        # 如果学生姓名不存在于学生系统中
        else:
            print(f"要修改的：{old_name}不存在，修改失败！")
        pass
    # 显示学生信息
    elif r == '4':
        for index,info in enumerate(stu_dict):
            # {"张三":{"地址":address,"手机号码":phone,"性别":sex,"年龄":age}}
            # info = "张三"
            # stu_dict['张三']['地址']
            print(f"访问的第{index+1}个的学生姓名为：{info}，学生地址是：{stu_dict[info]['地址']},手机号码：{stu_dict[info]['手机号码']}，性别：{stu_dict[info]['性别']}，"
                  f"年龄：{stu_dict[info]['年龄']}")
    elif r == '5':
        print("欢迎您下次光临学生管理系统！")
        print("再见！")
        break
"""
# 计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果。
"""
string = input("请输入字符串内容：")
# 定义收集器：数字
num = 0
# 定义收集器：字母
zimu = 0
# 空格
space = 0
# 其他
other = 0
# 循环遍历字符串
for i in string:
    # 判断是不是字母
    if (i >='a' and i <='z') or (i>='A' and i<='Z'):
        zimu +=1
    # 判断是不是数字
    elif i in "0123456789":
        num +=1
    # 判断是不是空格
    elif i == ' ':
        space +=1
    # 判断是不是其他内容
    else:
        other +=1
print(f"计算传入的string中,数字：{num},字母：{zimu},空格：{space}，以及其它内容：{other}")
"""
# 一行代码实现1~100的和。
# print(sum(range(1,101)))
# 删除列表中所有重复元素，使得每个元素只出现一次
nums5 = [11,22,33,44,55,11,22,33]
# 转成集合，再转成列表
# print(list(set(nums5)))

# 从0~9的十个数字中随机取出4个不重复的数字组成一个字符串，将四个字符串放入列表中。
# 导入随机模块
from random import randint      # 导入随机库
# print(randint(0, 9))        # 访问随机数字：0~9之间

# 定义一个空字符串，收集数字内容
str_obj = ""
# 定义一个空列表，收集四个字符串内容
str_list = []
# 定义一个死循环
while True:
    # 每次的一个随机数字
    num = randint(0,9)
    # 判断这个数字是否存在于字符串中
    if str(num) not in str_obj:
        str_obj +=str(num)
    if len(str_obj) >= 4:
        # 如果收集的字符串长度大于等于4了，就取到前四位
        str_obj = str_obj[:4]
        # 那么就再把它装到字符串列表里
        str_list.append(str_obj)
        # 每次收集完字符串后，再置空下字符串对象
        str_obj = ""
    # 如果字符串列表的长度等于4了，说明收集结束
    if len(str_list) == 4:
        break
# print(f"最终四个不重复的字符串列表：{str_list}")
# 判断输入的数字是否大于150
num = int(input("请输入数字："))
if num >150:
    print(f"输入的数字：{num}大于了150")
elif num < 150:
    print(f"输入的数字：{num}小于了150")
elif num == 150:
    print("两数相同")

